<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Introdu&ccedil;&atilde;o - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.view.introduction.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.view.introduction.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.view.html">Zend_View</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.view.html">Zend_View</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.view.controllers.html">Scripts Controladores</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.view.introduction" class="section"><div class="info"><h1 class="title">Introdução</h1></div>
    

    <p class="para">
        <span class="classname">Zend_View</span> é uma classe para trabalhar com a parte de visualização do
        padrão de projeto MVC. Basicamente ela existe para separar o script de visualização dos
        controladores e modelos. Ela fornece um sistema de assistentes, filtros de saída e escape
        de variáveis.
    </p>

    <p class="para">
        <span class="classname">Zend_View</span> é um sistema de template agnóstico; você pode usar o
        <acronym class="acronym">PHP</acronym> como sua linguagem de template, ou criar instâncias de outros
        sistemas de template e manipulá-las dentro do seu script de visualização.
    </p>

    <p class="para">
        Essencialmente, o funcionamento do <span class="classname">Zend_View</span> acontece em duas etapas
        principais: 1. Seu script controlador cria uma instância de
        <span class="classname">Zend_View</span>, atribuindo-lhe variáveis. 2. O controlador instrui o
        <span class="classname">Zend_View</span> a renderizar uma determinada visualização, passando o
        controle ao script de visualização, responsável pela geração da saída a ser visualizada.
    </p>

    <div class="section" id="zend.view.introduction.controller"><div class="info"><h1 class="title">Script Controlador</h1></div>
        

        <p class="para">
            Neste exemplo simples, suponhamos que seu controlador tenha uma listagem contendo dados
            sobre livros, que queremos renderizar para uma visualização. O controlador poderia ser
            algo como isto:
        </p>

        <pre class="programlisting brush: php">
// use um modelo para obter os dados para autores e títulos de livros.
$data = array(
    array(
        &#039;author&#039; =&gt; &#039;Hernando de Soto&#039;,
        &#039;title&#039; =&gt; &#039;The Mystery of Capitalism&#039;
    ),
    array(
        &#039;author&#039; =&gt; &#039;Henry Hazlitt&#039;,
        &#039;title&#039; =&gt; &#039;Economics in One Lesson&#039;
    ),
    array(
        &#039;author&#039; =&gt; &#039;Milton Friedman&#039;,
        &#039;title&#039; =&gt; &#039;Free to Choose&#039;
    )
);

// agora atribua os dados do livro a uma instância Zend_View
Zend_Loader::loadClass(&#039;Zend_View&#039;);
$view = new Zend_View();
$view-&gt;books = $data;

// e renderize um script de visualização chamado &quot;booklist.php&quot;
echo $view-&gt;render(&#039;booklist.php&#039;);
</pre>

    </div>

    <div class="section" id="zend.view.introduction.view"><div class="info"><h1 class="title">Script Visualizador</h1></div>
        

        <p class="para">
            Agora necessitaremos do script de visualização associado, &quot;booklist.php&quot;. Trata-se de um
            script <acronym class="acronym">PHP</acronym> como qualquer outro, com uma exceção: ele executa dentro
            do escopo da instância de <span class="classname">Zend_View</span>, o que implica que as
            referências a $this apontam para as propriedades e métodos da instância
            <span class="classname">Zend_View</span>. (Variáveis atribuídas à instância pelo controlador são
            propriedades públicas da instância de <span class="classname">Zend_View</span>). Deste modo, um
            script de visualização muito básico poderia se parecer com isto:
        </p>

        <pre class="programlisting brush: php">
 if ($this-&gt;books): ?&gt;

    &lt;!-- Uma tabela contendo alguns livros. --&gt;
    &lt;table&gt;
        &lt;tr&gt;
            &lt;th&gt;Autor&lt;/th&gt;
            &lt;th&gt;Título&lt;/th&gt;
        &lt;/tr&gt;

        &lt;?php foreach ($this-&gt;books as $key =&gt; $val): ?&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;?php echo $this-&gt;escape($val[&#039;author&#039;]) ?&gt;&lt;/td&gt;
            &lt;td&gt;&lt;?php echo $this-&gt;escape($val[&#039;title&#039;]) ?&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;?php endforeach; ?&gt;

    &lt;/table&gt;

&lt;?php else: ?&gt;

    &lt;p&gt;Não existem livros a serem exibidos.&lt;/p&gt;

&lt;?php endif;?&gt;
</pre>


        <p class="para">
            Observe a forma como empregamos o método &quot;escape()&quot; para escapar o conteúdo das
            variáveis para a saída.
        </p>
    </div>

    <div class="section" id="zend.view.introduction.options"><div class="info"><h1 class="title">Opções</h1></div>
        

        <p class="para">
            <span class="classname">Zend_View</span> possui diversas opções que podem ser definidas para
            configurar o comportamento de seus scripts de visualização.
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    <span class="property">basePath</span>: indica o caminho base na qual será definido os
                    caminhos dos scripts, assistentes e filtros. Ele assume esta estrutura de
                    diretórios:
                </p>

                <pre class="programlisting brush: php">
base/path/
    helpers/
    filters/
    scripts/
</pre>


                <p class="para">
                    Isto pode ser definido via  <span class="methodname">setBasePath()</span>,
                     <span class="methodname">addBasePath()</span> ou passar a opção
                    <span class="property">basePath</span> para o construtor.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <span class="property">encoding</span>: indica a codificação de caracteres para usar com
                     <span class="methodname">htmlentities()</span>,
                     <span class="methodname">htmlspecialchars()</span>, e outras operações. O padrão é
                    UTF-8. Pode ser definido através  <span class="methodname">setEncoding()</span> ou
                    passar a opção <span class="property">encoding</span> para o construtor.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <span class="property">escape</span>: indica uma chamada de retorno para ser usada por
                     <span class="methodname">escape()</span>. Pode ser definido através
                     <span class="methodname">setEscape()</span> ou passar a opção <span class="property">escape</span> para
                    o construtor.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <span class="property">filter</span>: indica um filtro para uso após a renderização de um
                    script de visualização. Pode ser definido através
                     <span class="methodname">setFilter()</span>,  <span class="methodname">addFilter()</span> ou
                    passar a opção <span class="property">filter</span> para o construtor.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <span class="property">strictVars</span>: força <span class="classname">Zend_View</span> para
                    emitir avisos e alertas quando as variáveis de visualização ​​não inicializadas
                    são acessadas. Pode ser definido chamando
                     <span class="methodname">strictVars(true)</span> ou passar a opção
                    <span class="property">strictVars</span> para o construtor.
                </p>
            </li>
        </ul>
    </div>

    <div class="section" id="zend.view.introduction.shortTags"><div class="info"><h1 class="title">Tags Curtas em Scripts de Visualização</h1></div>
        

        <p class="para">
            Em nossos exemplos, fazemos uso das tags longas do <acronym class="acronym">PHP</acronym>:
            <em class="emphasis">&lt;?php</em>. Nós também favorecemos o uso da <a href="http://us.php.net/manual/en/control-structures.alternative-syntax.php" class="link external">&raquo; sintaxe
                alternativa para estruturas de controle</a>. Estes são atalhos convenientes para
            usar quando escrevemos scripts de visualização, pois fazem as construções mais concisas,
            mantem as declarações sobre linhas simples e eliminam a necessidade de caçar os
            parênteses dentro de <acronym class="acronym">HTML</acronym>.
        </p>

        <p class="para">
            Em versões anteriores, muitas vezes recomendamos o uso de tags curtas
            (<em class="emphasis">&lt;?</em> e <em class="emphasis">&lt;?=</em>), que tornam os scripts de
            visualização um pouco menos prolixos. No entanto, o padrão para a configuração
            <b><tt>short_open_tag</tt></b> do <var class="filename">php.ini</var> é tipicamente off em
            hosts em produção ou compartilhados - tornando o seu uso não muito portátil. Se você
            usar template <acronym class="acronym">XML</acronym> em scripts de visualização, tags curtas de abertura
            farão com que os templates falhem na validação. Finalmente, se você usar tags curtas
            quando <b><tt>short_open_tag</tt></b> está off, os scripts de visualização ou
            causarão erros ou simplesmente imprimirão o código PHP de volta para o visualizador.
        </p>

        <p class="para">
            Se, apesar destas advertências, você deseja usar tags curtas, mas elas estão
            desativadas, você tem duas opções:
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    Ative as tags curtas em seu arquivo <var class="filename">.htaccess</var>:
                </p>

                <pre class="programlisting brush: apache">
php_value &quot;short_open_tag&quot; &quot;on&quot;
</pre>


                <p class="para">
                    Isso só será possível se você tiver permissão para criar e utilizar arquivos
                    <var class="filename">.htaccess</var>. Esta diretiva também podem ser adicionada ao seu
                    arquivo <var class="filename">httpd.conf</var>.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    Habilitar um stream wrapper opcional para converter tags curtas para tags longas
                    em tempo real:
                </p>

                <pre class="programlisting brush: php">
$view-&gt;setUseStreamWrapper(true);
</pre>


                <p class="para">
                    Isso registra <span class="classname">Zend_View_Stream</span> como um stream wrapper
                    para scripts de visualização, e garantirá que seu código continue trabalhando
                    como se as tags curtas estivessem habilitadas.
                </p>
            </li>
        </ul>

        <div class="warning"><b class="warning">Warning</b><div class="info"><h1 class="title">Stream Wrapper Prejudica o Desempenho</h1></div>
            

            <p class="para">
                O uso do stream wrapper <em class="emphasis">irá</em> prejudicar o desempenho de sua
                aplicação, embora benchmarks atuais estejam indisponíveis para quantificar o
                montante da degradação. Recomendamos que você ative as tags curtas, converta seus
                scripts para usar tags completas, ou tenha uma boa estratégia de cache completo e/ou
                parcial do conteúdo da página no lugar.
            </p>
        </div>
    </div>

    <div class="section" id="zend.view.introduction.accessors"><div class="info"><h1 class="title">Acessadores Utilitários</h1></div>
        

        <p class="para">
            Normalmente, você somente precisará invocar  <span class="methodname">assign()</span>,
             <span class="methodname">render()</span>, ou um dos métodos para configurar/adicionar caminhos
            de filtro, ajudante e script. No entanto, se você desejar estender
            <span class="classname">Zend_View</span> você mesmo, ou ter acesso a alguns de seus internos,
            existe para isso alguns acessadores:
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                     <span class="methodname">getVars()</span> retornará todas as variáveis ​​atribuídas.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">clearVars()</span> limpará todas as variáveis ​​atribuídas; útil
                    quando você quer reutilizar um objeto visualização, mas quer controlar quais
                    variáveis ​​estão disponíveis.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">getScriptPath($script)</span> recuperará o caminho resolvido
                    para um dado script de visualização.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">getScriptPaths()</span> recuperará todos os caminhos de script
                    registrados.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">getHelperPath($helper)</span> recuperará o caminho resolvido
                    para a classe assistente chamada.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">getHelperPaths()</span> recuperará os caminhos de todos os
                    assistentes registrados.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">getFilterPath($filter)</span> recuperará o caminho resolvido
                    para a classe filtro chamada.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">getFilterPaths()</span> recuperará os caminhos de todos os
                    filtros registrados.
                </p>
            </li>
        </ul>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.view.html">Zend_View</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.view.html">Zend_View</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.view.controllers.html">Scripts Controladores</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="reference.html">Refer&ecirc;ncia do Zend Framework</a></li>
  <li class="header up"><a href="zend.view.html">Zend_View</a></li>
  <li class="active"><a href="zend.view.introduction.html">Introdu&ccedil;&atilde;o</a></li>
  <li><a href="zend.view.controllers.html">Scripts Controladores</a></li>
  <li><a href="zend.view.scripts.html">Scripts de Visualiza&ccedil;&atilde;o</a></li>
  <li><a href="zend.view.helpers.html">Assistentes de Visualiza&ccedil;&atilde;o</a></li>
  <li><a href="zend.view.abstract.html">Zend_View_Abstract</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>